<html>
<head>
<link href="../tutorial.css" rel="stylesheet" type="text/css">
</head>
<body>

<div class="header">
The NakedMud Tutorial :: Text Editing
</div>

<!-- content starts here -->
<div class="content-wrap"><div class="content-body-wrap"><div class="content">
<div class="head">Text Editing</div>
<div class="info">
NakedMud has a simple, built-in text and script editor. This can be useful for
writing and editing game content. The OLC system and helpfiles make copious
use of the editor. The editor can be accessed via Python as well as C. This
tutorial explains how to use it via Python to edit a player's description.
</div>

<div class="head">Describing Yourself</div>
<div class="info">
Sockets can enter text editor mode with the edit_text method. This method takes
three arguments. The first is a string, setting the initial content of the text
editor. The second is a function, called after the text editor is quit. This
will be used to read the output of the text editor, and allow you to save it
somewhere. The third is optional; you can specify whether you want to enter
"text" or "script" mode. This will change syntax highlighting and formatting
rules for the editor, as appropriate for either pure-text or python script
editing.
<p></p>
Here are a set of functions that allow a player to change his or her own
description:

<pre class="code">
import mudsys # needed for add_cmd

def finish_desc_editor(sock, editor_output):
    '''this function is passed to edit_text, and called after a socket exits the
       text editor.'''
    # make sure our character has not somehow vanished.
    # If it is still around, change its description to the output of the editor
    if sock.ch != None:
        sock.ch.desc = editor_output

def cmd_describe(ch, cmd, arg):
    '''Allows a character to set his or her own description.'''
    # first, make sure we have a socket. The text editor pushes an input
    # handler onto the socket's stack. Thus, the socket needs to exist.
    if ch.sock != None:
        ch.send("You seem to be missing a socket.")
    else:
        # edit text editor mode. Set the initial value of the text editor to
        # our current description. When the text editor is finished, call the
        # function we're passing in
        ch.sock.edit_text(ch.desc, finish_desc_editor)

# add the 'describe' command to the game
mudsys.add_cmd("describe", None, cmd_describe, "player", True)
</pre>
</div>

<div class="head">Script Editing</div>
<div class="info">
NakedMud also has an Python mode for the text editor. This is what is used for
writing triggers and the 'extra code' section of game content. If you instead
wante to edit script editor mode, specify this as a third argument to edit_text:

<pre class="code">
sock.edit_text(initial_value, finish_function, "script")
</pre>
</div>

<!-- content ends here-->
</div></div></div>

<!-- navigation starts here -->
<div class="nav-wrap"><div class="nav">
<iframe src="nav.html" height="100%" width="100%" scrolling=no frameborder=0>
</iframe>
<!-- navigation ends here -->
</div></div>

<!--div class="footer">Edit Date: Nov 15, 2008. By Geoff Hollis</div-->
</body>
</html>
